package com.yyh.test;

import java.util.ArrayList;
import java.util.Objects;

/*1.定义Student类，包含以下属性：
	学号、姓名、身高
2.	定义MainApp类，包含main()方法；
3.	在main()方法中，创建一个可以存储Student对象的集合对象；
4.	创建以下几个Student对象：
	学号		姓名		身高
	it001	黄渤		1.72
	it002	孙红雷	1.78
	it003	章子怡	1.64
	it004	杨颖		1.68
5.	将上面几个对象添加到集合中
6.	遍历集合打印每个对象的属性值；
7.	获取并打印集合大小；
8.	获取第3个学员对象，并打印其属性值；
9.	移除掉第4个学员对象；
10.	再次获取并打印集合大小；
11.	将第一个对象替换为以下对象：
	it005	撒贝宁	1.67
12.	遍历集合，打印出身高在1.70以上的学员信息；
13.	遍历集合，打印出“孙”姓的学员信息；*/
public class MainApp {
    public static void main(String[] args) {
        //创建存储Student对象的集合
        ArrayList<Student> list = new ArrayList<>();
        //创建Student对象
        Student s1 = new Student("it001","黄渤",1.72);
        Student s2 = new Student("it002","孙红雷",1.78);
        Student s3 = new Student("it003","章子怡",1.64);
        Student s4 = new Student("it004","杨颖",1.68);
        //将对象添加到集合中
        list.add(s1);
        list.add(s2);
        list.add(s3);
        list.add(s4);
        //遍历集合并打印属性值
        for (Student student : list) {
            System.out.println(student);
        }
        //获取集合大小
        System.out.println("集合大小：" + list.size());
        //获取第3个元素
        System.out.println("第3个元素为："+list.get(2));
        //移除第4个元素
        list.remove(3);
        System.out.println("移除第4个元素后，集合大小：" + list.size());
        //替换第一个元素
        list.set(0,new Student("it005","撒贝宁",1.67));
        System.out.println("替换后的集合："+list);
        //遍历集合，打印身高大于1.70的元素
        for (Student student : list) {
            if (student.getHeight() > 1.70) {
                System.out.println("身高大于1.70的："+student);
            }
        }
        //遍历集合，打印姓“孙”的元素
        for (Student student : list) {
            if (student.getName().startsWith("孙")) {
                System.out.println("姓“孙”的："+student);
            }
        }
    }
}
//定义Student类
class Student{
    //属性
    //学号
    private String id;
    //姓名
    private String name;
    //身高
    private double height;
    //无参构造方法
    public Student() {
    }
    //有参构造方法
    public Student(String id, String name, double height) {
        this.id = id;
        this.name = name;
        this.height = height;
    }
    //getter和setter方法
    public String getId() {
        return id;
    }

    public void setId(String id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public double getHeight() {
        return height;
    }

    public void setHeight(double height) {
        this.height = height;
    }
    //重写equals()和hashCode()方法
    @Override
    public boolean equals(Object o) {
        if (this == o) return true;
        if (o == null || getClass() != o.getClass()) return false;
        Student student = (Student) o;
        return Double.compare(student.height, height) == 0 && Objects.equals(id, student.id) && Objects.equals(name, student.name);
    }

    @Override
    public int hashCode() {
        return Objects.hash(id, name, height);
    }
    //重写toString()方法
    @Override
    public String toString() {
        return "Student{" +
                "id='" + id + '\'' +
                ", name='" + name + '\'' +
                ", height=" + height +
                '}';
    }
}
